package todo.server;

import java.util.List;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

import core.todo.dao.TodoDAO;
import core.todo.domain.Todo;

import todo.client.TodoService;
import todo.shared.TodoVO;

public class TodoServiceImpl extends RemoteServiceServlet implements TodoService {

	@Override
	public void create(TodoVO todo) {
		Todo newInstance = convert(todo);
		TodoDAO dao = new TodoDAO();
		dao.create(newInstance);
		System.out.println("TodoServiceImpl.create(): success");
	}

	@Override
	public void delete(Long id) {
		TodoDAO dao = new TodoDAO();
		dao.delete(id);

	}

	@Override
	public TodoVO find(Long id) {
		TodoDAO dao = new TodoDAO();
		Todo todo = dao.findById(id);
		TodoVO vo = convert(todo);
		return vo;
	}

	@Override
	public TodoVO[] findAll() {
		TodoDAO dao = new TodoDAO();
		
		List<Todo> todos = dao.findAll();
		TodoVO[] arr = new TodoVO[todos.size()];
		int i = 0;
		for (Todo todo:todos) {
			arr[i++] = convert(todo);
		}
		return arr;
	}

	@Override
	public void update(TodoVO todo) {
		TodoDAO dao = new TodoDAO();
		dao.update(convert(todo));

	}
	
	private TodoVO convert(Todo todo) {
		TodoVO vo = new TodoVO(todo.getId(), todo.getTitle(), todo.getDescription(), todo.getDueDt(), todo.getComplete());
		return vo;
	}
	private Todo convert(TodoVO todo) {
		Todo todo_ = new Todo(todo.getId(), todo.getTitle(), todo.getDescription(), todo.getDueDt(), todo.getComplete());
		return todo_;
	}

}
